version = debug
support_private_base64 = y

#指定编译器
CC = gcc

#指定最终目标名，也就是生成的可执行程序名称
TARGET = target

#工程的根路径，就是当前路径，通过执行shell下的pwd命令来获取
ROOT_DIR = $(shell pwd)

#头文件路径
INCLUDE_PATH = $(ROOT_DIR)/include

#源文件路径
C_SRC = $(ROOT_DIR)/src $(ROOT_DIR)/util

#编译选项
CFLAGS = -Wall

#宏定义选项
DFLAGS = 

#根据调试版本或是发行版本添加不同的编译选项
ifeq ($(version), debug)
CFLAGS += -g
DFLAGS += -DDEBUG_ON
else
CFLAGS += -O2 -s
DFLAGS += -DDEBUG_OFF
endif

ifeq ($(support_private_base64), y)
DFLAGS += -DPRIVATE_BASE64
endif

#逐个遍历源文件的路径，取出每个路径下的.c文件名
C_SOURCES = $(foreach dir, $(C_SRC), $(wildcard $(dir)/*.c))

#通过源文件名推导出.o文件名
C_OBJS = $(C_SOURCES:.c=.o)

#最终目标
$(TARGET):$(C_OBJS)
	$(CC) $^ -o $@

#自动推导目标文件的依赖关系
%.o:%.c  
	$(CC) $(CFLAGS) $(DFLAGS) -I$(INCLUDE_PATH) $< -c -o $@
	
.PHONY:clean
clean:
	rm $(C_OBJS) $(TARGET) -rf